从git reset --hard HEAD留下未跟踪的文件:
当我跑步时
git reset --hard HEAD
,它应该重置为你所拉的原始版本,据我所知.不幸的是,它留下了文件,git status
显示了一个未跟踪文件的大列表.你怎么告诉git"只是把它带回到最后一次拉动中,没有更多,没有更少"?
要摆脱这些文件,我必须运行git clean -df
.
有人可以解释为什么它以这种方式工作,哪些文件将成为未跟踪的?
在评论中更新了每个笔记.
最后一个问题:
哪些文件将被取消跟踪?
没有.但是,这是文件已经未经跟踪应保持未跟踪并不会受到影响.这与大多数git命令的行为一致(除了那些明确影响未跟踪文件的命令).
我说应该保持不受限制,因为有一种情况甚至不是这样:如果你重置的提交文件与当前未跟踪文件的路径相同,那么工作树版本将被不可逆转地破坏.这是非常不合理的行为,IMO是一个错误,但它确实存在.
有人可以解释为什么它这样工作[?]
因为如果git隐式删除或修改未跟踪的文件,你就无法在git搞乱之前恢复那个文件的样子.如果你想让git控制下的文件,git假设你已经添加并且可能已经提交了它.既然你没有(文件没有跟踪),git通常不会弄乱它,除非你清楚地告诉它应该.
所以回到原始问题的前提:
当我运行git reset --hard HEAD时,它应该重置为你所提取的原始版本,据我所知
不.文档很清楚,只有被跟踪的状态才会被恢复.